package cc.vv.lkimagecomponent2;

import android.content.Context;

import cc.vv.lkimagecomponent2.compressplugin.CompressPlugin;
import cc.vv.lkimagecomponent2.controllerplugin.ControlPlugin;
import cc.vv.lkimagecomponent2.convertplugin.ConvertPlugin;
import cc.vv.lkimagecomponent2.downloadplugin.DownLoadPlugin;
import cc.vv.lkimagecomponent2.loaderplugin.LoadConfig;
import cc.vv.lkimagecomponent2.loaderplugin.LoadPlugin;
import cc.vv.lkimagecomponent2.operateplugin.EffectPlugin;
import cc.vv.lkimagecomponent2.initplugin.InitConfig;
import cc.vv.lkimagecomponent2.initplugin.InitPlugin;
import cc.vv.lklibrary.log.LogOperate;


/**
 * 图片框架入口 API
 *
 * @author dupeng dupeng@vv.cc
 * @date 2018/3/14
 */

public class LKImage {

    public static String TAG = "LKImage_TAG";

    private static Context context;

    public static Context getContext() {
        return context;
    }

    /**
     * Application的context!<br>
     * application初始化时调用。<br>
     * 初始化图片加载库。
     *
     * @param context Application的context!
     */
    public static InitConfig.InitBuilder init(Context context, String logTag) {
        LKImage.TAG = logTag;
        LKImage.context = context;
        return InitPlugin.getInstance().init(context);
    }

    public static DownLoadPlugin downLoad() {
        if (context == null) {
            LogOperate.e("LKImage context 为空！使用此库，必须提前调用init()方法,传入applicationContext!");
            return null;
        }
        return DownLoadPlugin.getInstance();
    }

    /**
     * 图片加载
     *
     * @return 图片加载参数链式设置。
     */
    public static LoadConfig.ConfigBuilder load() {
        if (context == null) {
            LogOperate.e("LKImage context 为空！使用此库，必须提前调用init()方法,传入applicationContext!");
            return null;
        }
        return LoadPlugin.getInstance().load(context);
    }

    /**
     * 图片管理.缓存清理,暂停/开始图片加载 等功能
     *
     * @return
     */
    public static ControlPlugin control() {
        if (context == null) {
            LogOperate.e("LKImage context 为空！使用此库，必须提前调用init()方法,传入applicationContext!");
            return null;
        }
        return ControlPlugin.getInstance();
    }

    /**
     * 图片压缩
     *
     * @return
     */
    public static CompressPlugin compress() {
        if (context == null) {
            LogOperate.e("LKImage context 为空！使用此库，必须提前调用init()方法,传入applicationContext!");
            return null;
        }
        return CompressPlugin.getInstance();
    }

    /**
     * 图片数据 与 其他数据 相互转换
     *
     * @return
     */
    public static ConvertPlugin convert() {
        if (context == null) {
            LogOperate.e("LKImage context 为空！使用此库，必须提前调用init()方法,传入applicationContext!");
            return null;
        }
        return ConvertPlugin.getInstance(context);
    }

    public static EffectPlugin effect() {
        if (context == null) {
            LogOperate.e("LKImage context 为空！使用此库，必须提前调用init()方法,传入applicationContext!");
            return null;
        }
        return EffectPlugin.getInstance();
    }

}
